/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package warehouse;

import ejb.warehouse.Prodotto;
import ejb.warehouse.ProdottoFacadeRemote;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import system.Utilities;


/**
 *
 * @author ciummo
 */
public class ProductActionForm extends org.apache.struts.action.ActionForm {

    private List <Prodotto> list;
    
    private String serialeProdotto;
    private String codArticolo;
    private String dataProduzione;
    private String idProprietario;
    private String locazione;
    private String stato;
    private String note;
    private int idOrdineProdotto;

    public int getIdOrdineProdotto() {
        return idOrdineProdotto;
    }

    public void setIdOrdineProdotto(int idOrdineProdotto) {
        this.idOrdineProdotto = idOrdineProdotto;
    }
    
    public String getDataProduzione() {
        return dataProduzione;
    }

    public void setDataProduzione(String dataProduzione) {
        this.dataProduzione = dataProduzione;
    }

    public String getCodArticolo() {
        return codArticolo;
    }

    public void setCodArticolo(String idArticolo) {
        this.codArticolo = idArticolo;
    }

    public String getIdProprietario() {
        return idProprietario;
    }

    public void setIdProprietario(String idProprietario) {
        this.idProprietario = idProprietario;
    }

    public List<Prodotto> getList() {
        return list;
    }

    public void setList(List<Prodotto> list) {
        this.list = list;
    }

    public String getLocazione() {
        return locazione;
    }

    public void setLocazione(String locazione) {
        this.locazione = locazione;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public String getSerialeProdotto() {
        return serialeProdotto;
    }

    public void setSerialeProdotto(String serialeProdotto) {
        this.serialeProdotto = serialeProdotto;
    }

    public String getStato() {
        return stato;
    }

    public void setStato(String stato) {
        this.stato = stato;
    }

    
    
    /**
     *
     */
    public ProductActionForm() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * This is the action called from the Struts framework.
     *
     * @param mapping The ActionMapping used to select this instance.
     * @param request The HTTP Request we are processing.
     * @return
     */
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        
         Utilities utility = new Utilities();
        
        //TODO : Impostare la lunghezza corretta del seriale!
        if (serialeProdotto == null || serialeProdotto.length() < 1) {
            errors.add("serialeProdotto", new ActionMessage("error.product.serialNumber"));

        }

        ProdottoFacadeRemote prodottoFacade;
        try {
            prodottoFacade = (ProdottoFacadeRemote) utility.callRemoteBean("ProdottoFacade/remote");
            Prodotto prodotto = prodottoFacade.find(serialeProdotto);
            prodotto.getDataProduzione();
            errors.add("serialeProdotto", new ActionMessage("error.product.serialNumberExist"));
            
            
        } catch (NamingException ex) {
            Logger.getLogger(ProductActionForm.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception e){
            
        }
        
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
        
        Date testDate = null;
        
        try {
            testDate = sdf.parse(getDataProduzione());
        }catch(ParseException e){

            errors.add("dataProduzione", new ActionMessage("error.product.badDate"));
        }

        
        
        
        return errors;
    }
}
